@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo 🔍 检查 Electron-IM 开发环境...

REM 检查函数
:check_command
set cmd=%1
set name=%2
set required=%3

where %cmd% >nul 2>&1
if %errorLevel% == 0 (
    for /f "tokens=*" %%i in ('%cmd% --version 2^>nul || %cmd% -v 2^>nul || echo 未知版本') do set version=%%i
    echo ✅ %name%: !version!
    goto :eof
) else (
    if "%required%"=="required" (
        echo ❌ %name%: 未安装
        set /a errors+=1
    ) else (
        echo ⚠️  %name%: 未安装（可选）
    )
    goto :eof
)

REM 检查 Node.js 版本是否符合要求
:check_node_version
where node >nul 2>&1
if %errorLevel% == 0 (
    for /f "tokens=*" %%i in ('node -v') do set version=%%i
    echo !version! | findstr /C:"v20" >nul
    if !errorLevel! == 0 (
        echo ✅ Node.js 版本: !version! (符合要求)
    ) else (
        echo ⚠️  Node.js 版本: !version! (推荐使用 v20)
        set /a errors+=1
    )
) else (
    echo ❌ Node.js: 未安装
    set /a errors+=1
)
goto :eof

REM 检查 nvm 是否可用
:check_nvm
where nvm >nul 2>&1
if %errorLevel% == 0 (
    for /f "tokens=*" %%i in ('nvm version') do set version=%%i
    echo ✅ nvm: !version!
) else (
    echo ⚠️  nvm: 未安装或未配置环境变量
    set /a errors+=1
)
goto :eof

REM 检查 .nvmrc 文件
:check_nvmrc
if exist ".nvmrc" (
    for /f "tokens=*" %%i in ('.nvmrc') do set version=%%i
    echo ✅ .nvmrc: !version!
) else (
    echo ⚠️  .nvmrc: 文件不存在
    set /a errors+=1
)
goto :eof

REM 检查当前目录是否是项目根目录
:check_project_root
if exist "package.json" (
    if exist "pnpm-workspace.yaml" (
        echo ✅ 项目根目录: 正确
    ) else (
        echo ❌ 项目根目录: 请在 Electron-IM 项目根目录下运行此脚本
        set /a errors+=1
    )
) else (
    echo ❌ 项目根目录: 请在 Electron-IM 项目根目录下运行此脚本
    set /a errors+=1
)
goto :eof

REM 检查网络连接
:check_network
powershell -Command "try { Invoke-WebRequest -Uri 'https://registry.npmjs.org' -TimeoutSec 5 | Out-Null; exit 0 } catch { exit 1 }" >nul 2>&1
if %errorLevel% == 0 (
    echo ✅ 网络连接: 正常
) else (
    echo ⚠️  网络连接: 可能存在问题，建议检查网络设置
    set /a errors+=1
)
goto :eof

REM 检查 npm 镜像源
:check_npm_registry
for /f "tokens=*" %%i in ('npm config get registry') do set registry=%%i
if "!registry!"=="https://registry.npmmirror.com/" (
    echo ✅ npm 镜像源: 已设置为国内镜像
) else (
    echo ⚠️  npm 镜像源: !registry! (建议设置为国内镜像)
    set /a errors+=1
)
goto :eof

REM 初始化错误计数器
set errors=0

echo.
echo 📋 环境检查结果:
echo.

call :check_project_root
echo.
call :check_command node "Node.js" required
call :check_node_version
echo.
call :check_command npm "npm" required
call :check_command pnpm "pnpm" required
echo.
call :check_nvm
call :check_nvmrc
echo.
call :check_network
call :check_npm_registry

echo.
echo 📊 检查总结:

if %errors% == 0 (
    echo 🎉 环境配置完美！可以开始开发了。
    echo.
    echo 📋 下一步操作:
    echo 1. 安装依赖: pnpm install
    echo 2. 启动项目: pnpm dev
) else (
    echo ⚠️  发现 %errors% 个问题，请根据上述提示进行修复。
    echo.
    echo 🔧 修复建议:
    echo 1. 运行环境设置脚本: scripts\setup-env.bat
    echo 2. 或者参考 README.md 中的手动设置步骤
    echo 3. 如果问题持续存在，请查看 README.md 中的问题排查部分
)

echo.
pause 